package com.labot.model;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.AccessType;

/**
 * This class represents the basic "user" object in AppFuse that allows for authentication
 * and user management.  It implements Acegi Security's UserDetails interface.
 *
 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
 *         Updated by Dan Kibler (dan@getrolling.com)
 *         Extended to implement Acegi UserDetails interface
 *         by David Carter david@carter.net
 */

@Entity
@Table(name="app_envios")
@AccessType("field")
public class Envio extends BaseObject implements Serializable {

    private static final long serialVersionUID = -1;
    
    @Column(name="fecha")
    private Date fecha;
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="centro")
    private Centro centro;
    
    @Column(name="numeroenvio")
    private Integer numeroenvio;
    
    @Column(name="protocolodesde")
    private Integer protocolodesde;
    
    @Column(name="protocolohasta")
    private Integer protocolohasta;
    
    @Column(name="observaciones", length = 300)
    private String observaciones;
    
    @OneToMany (
            cascade = {CascadeType.ALL},
            fetch = FetchType.LAZY
       )
       @JoinColumn (name = "envioId")
    private Set<EnvioBitacora> bitacoras = new HashSet<EnvioBitacora>();
    
    @Column(name = "lastUpdate")
    private Date lastupdate;
    
    public Envio() {
    }
    
    

	public Date getFecha() {
		return fecha;
	}



	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}



	public Centro getCentro() {
		return centro;
	}



	public void setCentro(Centro centro) {
		this.centro = centro;
	}



	public Integer getNumeroenvio() {
		return numeroenvio;
	}



	public void setNumeroenvio(Integer numeroenvio) {
		this.numeroenvio = numeroenvio;
	}



	public Integer getProtocolodesde() {
		return protocolodesde;
	}



	public void setProtocolodesde(Integer protocolodesde) {
		this.protocolodesde = protocolodesde;
	}



	public Integer getProtocolohasta() {
		return protocolohasta;
	}



	public void setProtocolohasta(Integer protocolohasta) {
		this.protocolohasta = protocolohasta;
	}



	public String getObservaciones() {
		return observaciones;
	}



	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}
	
	



	public Set<EnvioBitacora> getBitacoras() {
		return bitacoras;
	}



	public void setBitacoras(Set<EnvioBitacora> bitacoras) {
		this.bitacoras = bitacoras;
	}
	
	public void agregarEventoBitacora(EnvioBitacora b){
		this.bitacoras.add(b);
	}
	
	



	public Date getLastupdate() {
		return lastupdate;
	}



	public void setLastupdate(Date lastupdate) {
		this.lastupdate = lastupdate;
	}



	@Override
	public String toString() {
		return "id: " + this.getId();
	}

	@Override
	public boolean equals(Object o) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return 0;
	}
	
    
}